<?php
/**
 * Created by PhpStorm.
 * User: hhcyc
 * Date: 2018/4/6
 * Time: 21:00
 */

$urls = [
    'http://baidu.com',
    'http://sina.com',
    'http://qq.com',
    'http://taobao.com',
    'http://www.imooc.com',
    'http://weibo.com',
];

$workers = [];

echo "process start :" . date("Y-m-d H:i:s") . PHP_EOL;

/**
 * 新建子进程，并行执行curlData 函数
 */
foreach ($urls as $key => $url) {

    // 创建子进程
    $process       = new swoole_process(function (swoole_process $process) use ($url) {
        $content = curlData($url);
        // echo $content.PHP_EOL; // 第二个参数是true，所以是写入到管道
        $process->write($content . PHP_EOL); // 同上，都是写入到管道
    }, true);

    $pid           = $process->start();
    $workers[$pid] = $process;
}

// 这里是同步阻塞读取的，可以使用swoole_event_add将管道加入到事件循环中，变为异步模式
foreach ($workers as $process) {
    echo $process->read(); // 输出管道内容
}

echo "process end :" . date("Y-m-d H:i:s") . PHP_EOL;

function curlData($url)
{
    sleep(1);
    return $url . ' success' . PHP_EOL;
}